
package com.trial.area.trade.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.trial.area.common.dao.BaseDao;
import com.trial.area.trade.entity.TradeRecordVO;
import com.trial.area.trade.param.TradeRecordParam;

/**
 * 交易信息Dao实现类
 *
 * @author 朱国军
 * @version 2016年07月17日 朱国军
 */
@Repository("tradeRecordDao")
public class TradeRecordDao extends BaseDao<TradeRecordVO> {

    /**
     * 新增，注：返回的添加的条数，获取主键用entity.getId();
     *
     * @param entity 要增加的交易信息对象
     * @return 返回新增的条数
     */
    public Integer insert(TradeRecordVO entity) {
        return this.getSqlSession().insert("insertTradeRecord", entity);
    }
    
    /**
     * 修改
     *
     * @param entity 要修改的交易信息对象
     * @return 返回修改的条数
     */
    public Integer update(TradeRecordVO entity) {
        return this.getSqlSession().update("updateTradeRecordById", entity);
    }
    
    /**
     * 根据ID获取交易信息实体
     *
     * @param id 主键
     * @return 交易信息信息
     */
    public TradeRecordVO findById(String id) {
        return this.getSqlSession().selectOne("selectTradeRecordById", id);
    }
    
    /**
     * 按查询条件【分页】查询
     *
     * @param param 交易信息查询条件
     * @return 交易信息列表
     */
    public List<Map<String, Object>> queryByPage(TradeRecordParam param) {
        return queryMapList("selectTradeRecordList", param);
    }
    
    /**
     * 根据ID删除交易信息
     *
     * @param id 主键
     */
    public Integer delete(String id) {
        return this.getSqlSession().delete("deleteTradeRecordById", id);
    }
    
    /**
     * 审核支付成功未确认的订单
     *
     * @param nowTime 审核时间
     */
    public Integer audit(TradeRecordParam tradeRecordParam) {

        return this.getSqlSession().update("auditTrade", tradeRecordParam);

    }

    /**
     * 根据tradeNo更新订单信息
     *
     * @param tradeRecordVO
     * @return
     */
    public Integer updateByTradeNo(TradeRecordVO tradeRecordVO) {
        return this.getSqlSession().update("updateByTradeNo", tradeRecordVO);
    }
    
    /**
     * 根据商品ID，状态，确认时间，分类查询订单
     *
     * @param tradeRecordParam
     * @return
     */
    public List<Map<String, Object>> queryByGoodsId(TradeRecordParam tradeRecordParam) {
        return queryMapList("queryByGoodsIdList", tradeRecordParam);
    }
    
    /**
     * 查询24小时内未支付的订单
     *
     * @return
     */
    public List<TradeRecordVO> queryNoPayTrade() {
        return this.getSqlSession().selectList("queryNoPayTradeList");
    }
}
